Various applications utilize a random number generator (RNG) to generate a sequence of numbers that lack any predictable pattern. There are many applications of randomness and there are several different methods for generating random data. It should be noted that several computational methods for random number generation exist, but many fall short of “true” randomness. Rather these methods may meet, with varying success, some of the statistical tests for randomness intended to measure how unpredictable their results are. That is, to what degree their patterns are discernible. The uncertainty is often quantified in terms of “entropy,” a standard measure of unpredictability of information content.
A pseudorandom number generator (PRNG), also known as a deterministic random bit generator (DRBG), is an algorithm for generating a sequence of numbers whose properties approximate the properties of sequences of random numbers. The PRNG-generated sequence is not truly random, because it is completely determined by a relatively small set of initial values, called the PRNG's seed (which may include truly random values). Although sequences that are closer to truly random can be generated using specialized hardware (e.g., ones based on quantum-mechanical effects), pseudorandom number generators are important in practice for their speed in number generation, and their practicality for being implemented in low-cost compute systems. Cryptographic systems need a good source of randomness, for example, to be used for key generation or cryptographic challenges. There are cryptographically secure computationally based methods of generating random numbers, such as, for example, those based on the Yarrow algorithm and the Fortuna (PRNG), and others. Cryptographically strong PRNGs may be seeded by many independent sources of uncertainty, some of which may be under an attacker's control. A good seed source may be a true random number generator (TRNG), which is tied to some known-random physical phenomena (e.g., offset, thermal noise, phase noise, or the like). A sequence of numbers from a chaotic (as opposed to random) generator is similar to PRNGs in that it is deterministic, rule-based, and evolves predictably from an initial state.